import numpy as np
import csv
import random
from datetime import datetime
from time import strftime
from decimal import *

'''
Global and Local Empirical Bayes Smoothers with Gamma Model
'''

def getCurTime():
    """
    get current time
    Return value of the date string format(%Y-%m-%d %H:%M:%S)
    """
    format='%Y-%m-%d %H:%M:%S'
    sdate = None
    cdate = datetime.now()
    try:
        sdate = cdate.strftime(format)
    except:
        raise ValueError
    return sdate

def build_data_list(inputCSV):
    sKey = []
    fn = inputCSV
    ra = csv.DictReader(file(fn), dialect="excel")
    
    for record in ra:
        #print record[ra.fieldnames[0]], type(record[ra.fieldnames[-1]])
        for item in ra.fieldnames:
            temp = float(record[item])
            sKey.append(temp)
    sKey = np.array(sKey)
    sKey.shape=(-1,len(ra.fieldnames))
    return sKey

#--------------------------------------------------------------------------
#MAIN

if __name__ == "__main__":
    print "begin at " + getCurTime()
    getcontext().prec = 2
    unitCSV = 'C:/Users/Hu/Desktop/GeoBugs_example data/satscan_disease.csv'
    #unitCSV = 'C:/Users/Hu/Desktop/GeoBugs_example data/subset_contiguous.csv'
    dataMatrix = build_data_list(unitCSV)
    totalcase = sum(dataMatrix[:,2])
    totalpop = sum(dataMatrix[:,1])
    avgrate = totalcase/totalpop
    #print avgrate

    output = ''
    for i in dataMatrix[:,1]:
        #print Decimal(avgrate) * i
        #output += str(round(avgrate * i, 2))
        output += str(int(i))
        output += ', '
    #print output
    #print len(dataMatrix[:,1])

    a = [2.1238436851047762E-4, 1.8203828265084146E-4, 2.0991177145855884E-4, 2.0983084405802092E-4, 2.0612535857223834E-4, 1.808972503617945E-4, 2.1706940794318983E-4, 2.992250918359553E-4, 3.0307289302047234E-4, 3.0224492417430464E-4, 2.7039143382938423E-4, 3.1860147202137696E-4, 3.8819875776397513E-4, 2.822711974812724E-4, 3.2005268219744136E-4, 2.563324325213528E-4, 2.3534810927212712E-4, 3.187465903309448E-4, 2.1352908682939256E-4, 3.3018655540380313E-4, 3.481451229554843E-4, 2.0557300393001142E-4, 2.0612535857223834E-4, 9.469466759446528E-5, 2.551220660962399E-4, 1.7891777058569666E-4, 3.8450193831114106E-4, 1.9550494807236849E-4, 3.2213743459908465E-4, 2.140980309468972E-4, 2.819358419749606E-4, 2.2729080722330185E-4, 2.210295244252649E-4, 4.312170330728064E-4, 3.9699901155348146E-4, 1.876125298948991E-4, 2.7445696728615527E-4, 2.673128664656009E-4, 2.337316108045395E-4, 1.3647890008331595E-4, 2.0171483242503133E-4, 1.4521816733552217E-4, 2.5561840333611737E-4, 2.78949365111245E-4, 2.6656801836599244E-4, 1.8914065972099406E-4, 2.58327473126767E-4, 2.1186842806750176E-4, 2.2940515243972378E-4, 2.773457468214002E-4, 1.849077457434447E-4, 2.1507308401190253E-4, 1.887262488015883E-4, 1.9143076181635702E-4, 1.8399311709089134E-4, 1.8867923639397953E-4, 1.8937630998655107E-4, 2.2001619319181892E-4, 2.0599449016168455E-4, 2.1296436169185705E-4, 2.0063731854124867E-4, 1.6343162841980219E-4, 1.793609369815348E-4, 1.8772047104892981E-4, 1.7109108535032572E-4, 2.04659059508006E-4, 1.6507239901929639E-4, 1.5739456092989784E-4, 2.603790544014723E-4, 1.8189398980067868E-4, 1.927427151345183E-4, 1.8656088766282026E-4, 1.8869764431887116E-4, 1.9331332238394592E-4, 1.95195162630103E-4, 2.1216421510248932E-4, 9.522550859835263E-5, 2.1215048662586944E-4, 1.6577061181324368E-4, 2.0494568939231103E-4, 2.0221484732779027E-4, 1.9116752198426504E-4, 1.9216550987372446E-4, 1.890675840151699E-4, 2.0886245154391124E-4, 2.1479200973723776E-4, 1.994755023284747E-4, 1.909375654840026E-4, 2.0010614325859804E-4, 1.5886005284094048E-4, 1.9707434181648795E-4, 2.3768024084931072E-4, 1.671891327063741E-4, 1.5098276051389041E-4, 1.4712841105835197E-4, 1.9263121396191038E-4, 2.1732043898728675E-4, 1.811184061580258E-4, 2.873607899753648E-4, 2.0342675652442106E-4, 2.3342016563494955E-4, 2.5663179325742736E-4, 2.1007543617935533E-4, 1.1066843736166445E-4, 2.0554030579093236E-4, 1.9718198443018477E-4, 2.1652184215149175E-4, 1.954301493729315E-4, 1.8656304235226538E-4, 2.341892487288287E-4, 2.226529278860017E-4, 2.132666843765317E-4, 2.3097753358523328E-4, 1.590464415609358E-4, 2.3337468866881626E-4, 2.1914133560043406E-4, 1.6056862703119312E-4, 1.8712215718261202E-4, 2.1170870092516701E-4, 2.456832761998458E-4, 2.2359979040982477E-4, 2.1580321600296774E-4, 2.307333941764067E-4, 1.7595026472517103E-4, 1.8010151176117448E-4, 2.106277512504158E-4, 2.3336405960118083E-4, 2.0531699341720834E-4, 2.3327724752701302E-4, 1.9717870141393562E-4, 2.2061757128385957E-4, 2.4261846911115053E-4, 2.3808638071500315E-4, 2.2541855059002785E-4, 2.0725742210924843E-4, 1.7791635147032146E-4, 1.8540614412038242E-4, 2.0702858330117835E-4, 2.1677605828867346E-4, 2.3080562704118725E-4, 2.3361230194185104E-4, 2.0483462928922382E-4, 2.604711098422482E-4, 2.2708871620684428E-4, 2.564275592145219E-4, 1.695632360817523E-4, 2.321493529062473E-4, 2.3856677252744155E-4, 1.411486340406992E-4, 2.3282222266150944E-4, 1.673477330219887E-4, 1.7884667771585016E-4, 2.1719819420063852E-4, 1.6534190094453737E-4, 2.449602705061273E-4, 2.0172214187985546E-4, 1.7923114530578617E-4, 1.992795595714869E-4, 2.064087923317737E-4, 2.1323512810413902E-4, 1.7881134545739576E-4, 2.084052217465724E-4, 3.1867939476573225E-4, 1.7190876479523384E-4, 2.0004128852195094E-4, 1.7831868667887444E-4, 1.8739948255366758E-4, 1.9907741836403865E-4, 2.788184972774581E-4, 1.8455073492148946E-4, 2.0098016480373513E-4, 1.7551168311267013E-4, 2.8887866116981167E-4, 1.8127823165674708E-4, 1.7261240924076247E-4, 1.7177365960184933E-4, 1.888141125062376E-4, 1.703429285013131E-4, 1.936783390145646E-4, 2.02678461868548E-4, 1.8103011611429626E-4, 2.8640419116604564E-4, 1.9001173849694355E-4, 1.7138661203259804E-4, 1.9038327369647114E-4, 1.6595018333544063E-4, 1.896675326814216E-4, 2.2377343370116485E-4, 1.7570281124497993E-4, 1.7357273551130508E-4, 1.786765897509391E-4, 1.7159982263215655E-4, 1.617591070715885E-4, 1.9303441648654818E-4, 1.8645553324973867E-4, 1.8880648174959843E-4, 1.9238476953907816E-4, 3.009328919650918E-4, 1.8996621199255073E-4, 1.978996820698586E-4, 2.915026963999417E-4, 2.516778523489933E-4, 2.2650313140579168E-4, 2.2807169315706275E-4, 2.7865774961867884E-4, 1.5109578786151384E-4, 1.5135216947118632E-4, 1.994254235622583E-4, 2.2156123121576187E-4, 2.2000641975261173E-4, 2.0979632187151278E-4, 1.975761912910904E-4, 1.9880863461202588E-4, 1.8921888986732845E-4, 1.929974220841266E-4, 2.2286496587227143E-4, 2.2371079441237828E-4, 1.9741367730801012E-4, 1.9691334835088563E-4, 1.9183067239499644E-4, 1.805753910640455E-4, 1.968721505346633E-4, 1.9330891251553376E-4, 2.1223740674187282E-4, 1.969580916949338E-4, 1.831820035421658E-4, 1.9304051419862152E-4, 1.6583831267054963E-4, 1.9072982414003808E-4, 1.492118629399512E-4, 2.0345426734187742E-4, 1.8310445276737412E-4, 2.145904327001485E-4, 2.0114319443417268E-4, 2.1014836474551033E-4, 1.8780134450431944E-4, 2.1728895809944591E-4, 1.9054768022634756E-4, 2.033030770518662E-4, 2.076484926316731E-4, 1.8311054883225409E-4, 1.5754389074331177E-4, 2.0988860141716076E-4, 2.100115430856259E-4, 2.0207432386254426E-4]
    filePath = 'C:/Users/Hu/Desktop/GeoBugs_example data/EBS_rate.csv'
    np.savetxt(filePath, a, delimiter=',')
    print "end at " + getCurTime()
    print "==========================="

           
